#include "estructuras.h"
#include "semaforos.h"

int main(int argc, char *argv[])
{
	char mensaje[150];					/* Mensaje para imprimir por pantalla */

	/* Hago algunas manganetas con el PATH para no depender de las rutas */
	char *pathenv;						/* de los archivos para poder ejecutarlos */
	int pathsize = 2 * sizeof(pathenv);
	char newpathenv[pathsize];
	pathenv = (char *)getenv("PATH");			/* Obtengo el valor de la variable de enviroment PATH */
	strcpy(newpathenv, pathenv);
	strcat(newpathenv, ":.");				/* Agrego el directorio donde estoy parado, se puede poner otro... */
	setenv("PATH", newpathenv, 1);
	int ingreso;

	/* Antes de arrancar los procesos creo las colas, memorias compartidas y semaforos */
	int cola_interna;					/* Cola Interna (entre procesos) */
	int cola_externa;					/* Cola Externa (entre subsistemas) */
	key_t clave_interna;
	key_t clave_externa;

	clave_interna = ftok(DIRECTORIO, COLA_INTERNA);
	clave_externa = ftok(DIRECTORIO, COLA_EXTERNA);

	/*
	 * Colas
	 */
	if ( (cola_interna = msgget(clave_interna, 0666)) < 0 )				/* Obtengo el ID de la cola */
	{
		sprintf(mensaje, "Error al obtener el ID de la cola Externa\n");
		write(fileno(stdout), mensaje, strlen(mensaje));
		exit(-1);
	}
	if( msgctl(cola_interna, IPC_RMID, 0) < 0 )
	{
	        sprintf(mensaje, "Error al eliminar la cola Interna\n");
	        write(fileno(stdout), mensaje, strlen(mensaje));

	        exit(-1);
	}

	if ( (cola_externa = msgget(clave_externa, 0666)) < 0 )				/* Obtengo el ID de la cola */
	{
		sprintf(mensaje, "Error al obtener el ID de la cola Externa\n");
		write(fileno(stdout), mensaje, strlen(mensaje));
		exit(-1);
	}
	if( msgctl(cola_externa, IPC_RMID, 0) < 0 )
	{
	        sprintf(mensaje, "Error al eliminar la cola Externa\n");
	        write(fileno(stdout), mensaje, strlen(mensaje));

	        exit(-1);
	}

	printf("La ejecucion termino con exito\n");
 return 0;
}
